A "time reversal" filtering method is a method of filtering an input signal twice, once in the forward time direction and once in the reverse time direction. The first (forward) filter exhibits a first frequency-dependent magnitude response and a first frequency-dependent phase response. The frequency dependent phase response, or group delay, disadvantageously distorts phase dependent information components included within the input signal (e.g., audio or video information included within a television signal). To compensate for the distorting effect of the first (forward) filtering, a second (reverse) filter is cascaded with the first (forward) filter. The second (reverse) filter exhibits a second frequency-dependent magnitude response and a second frequency-dependent phase response. If the group delays of the two filters are complimentary, then the phase-distorting effect of the first filter is canceled by a "phase-restoring" effect of the second filter. This time reversal filter response advantageously provides minimum phase distortion of the filtered signal. In addition, the magnitude response of the time reversal filtered signal is the product of the magnitude of one of the forward and reverse filters.
A time-reversal filter is relatively easy to implement using a computer running the appropriate software. For example, the MATLAB.TM. computer program, including the Signal Processing Toolbox, from The Mathworks, Inc., includes a command "filtfilt" which will perform the above described forward and reverse filtering of a signal stored in a computer's memory. Unfortunately, if it is necessary to perform time-reversal filtering of a high-bandwidth signal in real-time then a dedicated hardware implementation becomes necessary.
An example of a prior art hardware implementation of a time-reversal filter is shown in FIG. 4 and includes an analog low pass filter (LPF), an analog to digital (A/D) converter, an infinite impulse response (IIR) filter, four last in first out (LIFO) memory arrangements and four switches (SW1-SW4). An input signal IN is filtered and digitized by the cascaded LPF and A/D converter, resulting in a "forward" filtered input signal. The forward filtered signal must now be "reverse" filtered by the IIR. The "time reversal" is accomplished by storing the forward filtered signal in the LIFO memory arrangement. When the forward filtered signal is read form the LIFO memory arrangement the more recent samples will be retrieved first, thus producing a "time reversed" forward filtered signal.
Unfortunately, since the LIFOs cannot hold an infinite amount of data the signal stream needs to be partitioned and reverse filtered by the IIR segment by segment. The segmenting is accomplished by using the four LIFOs as follows. In a first mode of operation all the switches are in the "1" position (as shown in FIG. 4), the first and third LIFOs are receiving and storing data while the second and fourth LIFOs are transmitting data previously stored (i.e., during a second mode of operation). In the second mode of operation all the switches are in the "0" position, the first and third LIFOs are transmitting data previously stored (i.e., during the first mode of operation) while the second and fourth LIFOs are receiving and storing data. A controller (not shown) controls the switches and LIFOs, thus causing the modes of operation to be alternated.
Disadvantageously, as a result of the segmented processing, the input signal stream is interrupted and signal corruption occurs at the segment boundaries. In a digital television system the segment length may be selected to be one horizontal line, thereby causing any boundary corruption to occur during the horizontal blanking interval. However, if the data stream to be filtered is continuous, such as an MPEG data stream (which has no blanking interval) or a communication channel, then alternate methods must be used. For example, an "overlap-add" technique may be used to help reduce the corruption. This technique requires considerable amount of hardware to store data beyond a segment boundary and re-integrate the data stream at the exact boundary segment. Moreover, the results of this technique are not always acceptable.
It is therefore desirable to implement a real-time filtering system which provides significantly reduced phase distortion, does not require segmentation of an input signal and does not require an excessive amount of hardware to implement.